import requests
from lxml import etree
import re


# 爬虫
def spider(url,info):
    re = requests.get(url)  # get请求获取网页
    re.encoding='utf-8'  # 设置编码防止文字乱码
    html = re.text  # 获取页面数据
    selector = etree.HTML(html)
    contents = selector.xpath("//table[@class='ch-table']/tbody/tr")  # 获取所有的tr标签数据，格式为列表

    for data in contents:
        name = str(data.xpath("./td[1]/a/text()")[0])  # 获取大学名称
        info.append(name.strip())  # 加入info列表中，strip去除字符串两端空格


def save(info):
    f = open("school_name.txt", 'w',encoding='utf-8')  # w方式创建文件，默认会覆盖原有同名文件的数据，设置编码为utf-8
    for name in info:
        f.write(name+"\n")  # 循环写入大学名称，后面加了换行符实现一个名称占据一行
    f.close()

    
def main():
    infos = []  # 初始化的列表，注意在python中列表传入函数中被修改后会保存修改，利用这个特性保存爬虫数据
    base_url = "https://yz.chsi.com.cn/sch/?start="  # 网站基础url
    offset = 0 # 偏移量
    for i in range(0,43):  # 循环爬取所有页面的数据
        url = base_url + str(offset)
        spider(url, infos)
        offset += 20
        print("当前爬取进度为{}/43".format(i+1))
    save(infos)  # 调用save函数存储数据到本地


if __name__ == "__main__":
    main()
